IdrisDoc: [builtins]

[builtins]

(~=~) : (x : a) -> (y : b) -> Type

Explicit heterogeneous ("John Major") equality. Use this when Idris
incorrectly chooses homogeneous equality for (=).

Fixity
Non-associative, precedence 5
a

the type of the left side

b

the type of the right side

x

the left side

y

the right side

void : Void -> a

The eliminator for the Void type.

unsafePerformPrimIO : PrimIO a -> a
unsafePerformIO : IO' ffi a -> a
trans : (a = b) -> (b = c) -> a = c

Transitivity of propositional equality

sym : (l = r) -> r = l

Symmetry of propositional equality

run__provider : IO a -> PrimIO a
run__IO : IO' l () -> PrimIO ()
replace : (x = y) -> P x -> P y

Perform substitution in a term according to some equality.

This is used by the rewrite tactic and term.

really_believe_me : a -> b

Subvert the type checker. This function will reduce in the type checker.
Use it with extreme care - it can result in segfaults or worse!

prim_write : String -> IO' l Int
prim_read : IO' l String
prim_lenString : String -> Int
prim_io_return : a -> PrimIO a
prim_io_bind : PrimIO a -> (a -> PrimIO b) -> PrimIO b
prim_fwrite : Ptr -> String -> IO' l Int
prim_fread : Ptr -> IO' l String
prim_fork : PrimIO () -> PrimIO Ptr
prim__zextInt_BigInt : Int -> Integer
prim__zextInt_B64 : Int -> Bits64
prim__zextInt_B32 : Int -> Bits32
prim__zextInt_B16 : Int -> Bits16
prim__zextChar_BigInt : Char -> Integer
prim__zextB8_Int : Bits8 -> Int
prim__zextB8_BigInt : Bits8 -> Integer
prim__zextB8_B64 : Bits8 -> Bits64
prim__zextB8_B32 : Bits8 -> Bits32
prim__zextB8_B16 : Bits8 -> Bits16
prim__zextB64_BigInt : Bits64 -> Integer
prim__zextB32_Int : Bits32 -> Int
prim__zextB32_BigInt : Bits32 -> Integer
prim__zextB32_B64 : Bits32 -> Bits64
prim__zextB16_Int : Bits16 -> Int
prim__zextB16_BigInt : Bits16 -> Integer
prim__zextB16_B64 : Bits16 -> Bits64
prim__zextB16_B32 : Bits16 -> Bits32
prim__xorInt : Int -> Int -> Int
prim__xorChar : Char -> Char -> Char
prim__xorBigInt : Integer -> Integer -> Integer
prim__xorB8 : Bits8 -> Bits8 -> Bits8
prim__xorB64 : Bits64 -> Bits64 -> Bits64
prim__xorB32 : Bits32 -> Bits32 -> Bits32
prim__xorB16 : Bits16 -> Bits16 -> Bits16
prim__writeString : prim__WorldType -> String -> Int
prim__writeFile : prim__WorldType -> Ptr -> String -> Int
prim__vm : Ptr
prim__uremInt : Int -> Int -> Int
prim__uremChar : Char -> Char -> Char
prim__uremBigInt : Integer -> Integer -> Integer
prim__uremB8 : Bits8 -> Bits8 -> Bits8
prim__uremB64 : Bits64 -> Bits64 -> Bits64
prim__uremB32 : Bits32 -> Bits32 -> Bits32
prim__uremB16 : Bits16 -> Bits16 -> Bits16
prim__udivInt : Int -> Int -> Int
prim__udivChar : Char -> Char -> Char
prim__udivBigInt : Integer -> Integer -> Integer
prim__udivB8 : Bits8 -> Bits8 -> Bits8
prim__udivB64 : Bits64 -> Bits64 -> Bits64
prim__udivB32 : Bits32 -> Bits32 -> Bits32
prim__udivB16 : Bits16 -> Bits16 -> Bits16
prim__truncInt_B8 : Int -> Bits8
prim__truncInt_B64 : Int -> Bits64
prim__truncInt_B32 : Int -> Bits32
prim__truncInt_B16 : Int -> Bits16
prim__truncBigInt_Int : Integer -> Int
prim__truncBigInt_Char : Integer -> Char
prim__truncBigInt_B8 : Integer -> Bits8
prim__truncBigInt_B64 : Integer -> Bits64
prim__truncBigInt_B32 : Integer -> Bits32
prim__truncBigInt_B16 : Integer -> Bits16
prim__truncB64_Int : Bits64 -> Int
prim__truncB64_B8 : Bits64 -> Bits8
prim__truncB64_B32 : Bits64 -> Bits32
prim__truncB64_B16 : Bits64 -> Bits16
prim__truncB32_Int : Bits32 -> Int
prim__truncB32_B8 : Bits32 -> Bits8
prim__truncB32_B16 : Bits32 -> Bits16
prim__truncB16_Int : Bits16 -> Int
prim__truncB16_B8 : Bits16 -> Bits8
prim__toStrInt : Int -> String
prim__toStrChar : Char -> String
prim__toStrBigInt : Integer -> String
prim__toStrB8 : Bits8 -> String
prim__toStrB64 : Bits64 -> String
prim__toStrB32 : Bits32 -> String
prim__toStrB16 : Bits16 -> String
prim__toFloatInt : Int -> Double
prim__toFloatChar : Char -> Double
prim__toFloatBigInt : Integer -> Double
prim__toFloatB8 : Bits8 -> Double
prim__toFloatB64 : Bits64 -> Double
prim__toFloatB32 : Bits32 -> Double
prim__toFloatB16 : Bits16 -> Double
prim__systemInfo : Int -> String
prim__syntactic_eq : (a : Type) -> (b : Type) -> (x : a) -> (y : b) -> Maybe (x = y)
prim__subInt : Int -> Int -> Int
prim__subFloat : Double -> Double -> Double
prim__subChar : Char -> Char -> Char
prim__subBigInt : Integer -> Integer -> Integer
prim__subB8 : Bits8 -> Bits8 -> Bits8
prim__subB64 : Bits64 -> Bits64 -> Bits64
prim__subB32 : Bits32 -> Bits32 -> Bits32
prim__subB16 : Bits16 -> Bits16 -> Bits16
prim__strToFloat : String -> Double
prim__strTail : String -> String
prim__strRev : String -> String
prim__strIndex : String -> Int -> Char
prim__strHead : String -> Char
prim__strCons : Char -> String -> String
prim__stdout : Ptr
prim__stdin : Ptr
prim__stderr : Ptr
prim__sremInt : Int -> Int -> Int
prim__sremChar : Char -> Char -> Char
prim__sremBigInt : Integer -> Integer -> Integer
prim__sremB8 : Bits8 -> Bits8 -> Bits8
prim__sremB64 : Bits64 -> Bits64 -> Bits64
prim__sremB32 : Bits32 -> Bits32 -> Bits32
prim__sremB16 : Bits16 -> Bits16 -> Bits16
prim__slteInt : Int -> Int -> Int
prim__slteFloat : Double -> Double -> Int
prim__slteChar : Char -> Char -> Int
prim__slteBigInt : Integer -> Integer -> Int
prim__slteB8 : Bits8 -> Bits8 -> Int
prim__slteB64 : Bits64 -> Bits64 -> Int
prim__slteB32 : Bits32 -> Bits32 -> Int
prim__slteB16 : Bits16 -> Bits16 -> Int
prim__sltInt : Int -> Int -> Int
prim__sltFloat : Double -> Double -> Int
prim__sltChar : Char -> Char -> Int
prim__sltBigInt : Integer -> Integer -> Int
prim__sltB8 : Bits8 -> Bits8 -> Int
prim__sltB64 : Bits64 -> Bits64 -> Int
prim__sltB32 : Bits32 -> Bits32 -> Int
prim__sltB16 : Bits16 -> Bits16 -> Int
prim__shlInt : Int -> Int -> Int
prim__shlChar : Char -> Char -> Char
prim__shlBigInt : Integer -> Integer -> Integer
prim__shlB8 : Bits8 -> Bits8 -> Bits8
prim__shlB64 : Bits64 -> Bits64 -> Bits64
prim__shlB32 : Bits32 -> Bits32 -> Bits32
prim__shlB16 : Bits16 -> Bits16 -> Bits16
prim__sgteInt : Int -> Int -> Int
prim__sgteFloat : Double -> Double -> Int
prim__sgteChar : Char -> Char -> Int
prim__sgteBigInt : Integer -> Integer -> Int
prim__sgteB8 : Bits8 -> Bits8 -> Int
prim__sgteB64 : Bits64 -> Bits64 -> Int
prim__sgteB32 : Bits32 -> Bits32 -> Int
prim__sgteB16 : Bits16 -> Bits16 -> Int
prim__sgtInt : Int -> Int -> Int
prim__sgtFloat : Double -> Double -> Int
prim__sgtChar : Char -> Char -> Int
prim__sgtBigInt : Integer -> Integer -> Int
prim__sgtB8 : Bits8 -> Bits8 -> Int
prim__sgtB64 : Bits64 -> Bits64 -> Int
prim__sgtB32 : Bits32 -> Bits32 -> Int
prim__sgtB16 : Bits16 -> Bits16 -> Int
prim__sextInt_BigInt : Int -> Integer
prim__sextInt_B64 : Int -> Bits64
prim__sextInt_B32 : Int -> Bits32
prim__sextInt_B16 : Int -> Bits16
prim__sextChar_BigInt : Char -> Integer
prim__sextB8_Int : Bits8 -> Int
prim__sextB8_BigInt : Bits8 -> Integer
prim__sextB8_B64 : Bits8 -> Bits64
prim__sextB8_B32 : Bits8 -> Bits32
prim__sextB8_B16 : Bits8 -> Bits16
prim__sextB64_BigInt : Bits64 -> Integer
prim__sextB32_Int : Bits32 -> Int
prim__sextB32_BigInt : Bits32 -> Integer
prim__sextB32_B64 : Bits32 -> Bits64
prim__sextB16_Int : Bits16 -> Int
prim__sextB16_BigInt : Bits16 -> Integer
prim__sextB16_B64 : Bits16 -> Bits64
prim__sextB16_B32 : Bits16 -> Bits32
prim__sdivInt : Int -> Int -> Int
prim__sdivChar : Char -> Char -> Char
prim__sdivBigInt : Integer -> Integer -> Integer
prim__sdivB8 : Bits8 -> Bits8 -> Bits8
prim__sdivB64 : Bits64 -> Bits64 -> Bits64
prim__sdivB32 : Bits32 -> Bits32 -> Bits32
prim__sdivB16 : Bits16 -> Bits16 -> Bits16
prim__registerPtr : Ptr -> Int -> ManagedPtr
prim__readString : prim__WorldType -> String
prim__readFile : prim__WorldType -> Ptr -> String
prim__orInt : Int -> Int -> Int
prim__orChar : Char -> Char -> Char
prim__orBigInt : Integer -> Integer -> Integer
prim__orB8 : Bits8 -> Bits8 -> Bits8
prim__orB64 : Bits64 -> Bits64 -> Bits64
prim__orB32 : Bits32 -> Bits32 -> Bits32
prim__orB16 : Bits16 -> Bits16 -> Bits16
prim__null : Ptr
prim__negFloat : Double -> Double
prim__mulInt : Int -> Int -> Int
prim__mulFloat : Double -> Double -> Double
prim__mulChar : Char -> Char -> Char
prim__mulBigInt : Integer -> Integer -> Integer
prim__mulB8 : Bits8 -> Bits8 -> Bits8
prim__mulB64 : Bits64 -> Bits64 -> Bits64
prim__mulB32 : Bits32 -> Bits32 -> Bits32
prim__mulB16 : Bits16 -> Bits16 -> Bits16
prim__lteChar : Char -> Char -> Int
prim__lteBigInt : Integer -> Integer -> Int
prim__lteB8 : Bits8 -> Bits8 -> Int
prim__lteB64 : Bits64 -> Bits64 -> Int
prim__lteB32 : Bits32 -> Bits32 -> Int
prim__lteB16 : Bits16 -> Bits16 -> Int
prim__ltString : String -> String -> Int
prim__ltChar : Char -> Char -> Int
prim__ltBigInt : Integer -> Integer -> Int
prim__ltB8 : Bits8 -> Bits8 -> Int
prim__ltB64 : Bits64 -> Bits64 -> Int
prim__ltB32 : Bits32 -> Bits32 -> Int
prim__ltB16 : Bits16 -> Bits16 -> Int
prim__lshrInt : Int -> Int -> Int
prim__lshrChar : Char -> Char -> Char
prim__lshrBigInt : Integer -> Integer -> Integer
prim__lshrB8 : Bits8 -> Bits8 -> Bits8
prim__lshrB64 : Bits64 -> Bits64 -> Bits64
prim__lshrB32 : Bits32 -> Bits32 -> Bits32
prim__lshrB16 : Bits16 -> Bits16 -> Bits16
prim__intToChar : Int -> Char
prim__gteChar : Char -> Char -> Int
prim__gteBigInt : Integer -> Integer -> Int
prim__gteB8 : Bits8 -> Bits8 -> Int
prim__gteB64 : Bits64 -> Bits64 -> Int
prim__gteB32 : Bits32 -> Bits32 -> Int
prim__gteB16 : Bits16 -> Bits16 -> Int
prim__gtChar : Char -> Char -> Int
prim__gtBigInt : Integer -> Integer -> Int
prim__gtB8 : Bits8 -> Bits8 -> Int
prim__gtB64 : Bits64 -> Bits64 -> Int
prim__gtB32 : Bits32 -> Bits32 -> Int
prim__gtB16 : Bits16 -> Bits16 -> Int
prim__fromStrInt : String -> Int
prim__fromStrChar : String -> Char
prim__fromStrBigInt : String -> Integer
prim__fromStrB8 : String -> Bits8
prim__fromStrB64 : String -> Bits64
prim__fromStrB32 : String -> Bits32
prim__fromStrB16 : String -> Bits16
prim__fromFloatInt : Double -> Int
prim__fromFloatChar : Double -> Char
prim__fromFloatBigInt : Double -> Integer
prim__fromFloatB8 : Double -> Bits8
prim__fromFloatB64 : Double -> Bits64
prim__fromFloatB32 : Double -> Bits32
prim__fromFloatB16 : Double -> Bits16
prim__floatToStr : Double -> String
prim__floatTan : Double -> Double
prim__floatSqrt : Double -> Double
prim__floatSin : Double -> Double
prim__floatLog : Double -> Double
prim__floatFloor : Double -> Double
prim__floatExp : Double -> Double
prim__floatCos : Double -> Double
prim__floatCeil : Double -> Double
prim__floatATan : Double -> Double
prim__floatASin : Double -> Double
prim__floatACos : Double -> Double
prim__eqString : String -> String -> Int
prim__eqInt : Int -> Int -> Int
prim__eqFloat : Double -> Double -> Int
prim__eqChar : Char -> Char -> Int
prim__eqBigInt : Integer -> Integer -> Int
prim__eqB8 : Bits8 -> Bits8 -> Int
prim__eqB64 : Bits64 -> Bits64 -> Int
prim__eqB32 : Bits32 -> Bits32 -> Int
prim__eqB16 : Bits16 -> Bits16 -> Int
prim__divFloat : Double -> Double -> Double
prim__concat : String -> String -> String
prim__complInt : Int -> Int
prim__complChar : Char -> Char
prim__complBigInt : Integer -> Integer
prim__complB8 : Bits8 -> Bits8
prim__complB64 : Bits64 -> Bits64
prim__complB32 : Bits32 -> Bits32
prim__complB16 : Bits16 -> Bits16
prim__charToInt : Char -> Int
prim__believe_me : (a : Type) -> (b : Type) -> (x : a) -> b
prim__ashrInt : Int -> Int -> Int
prim__ashrChar : Char -> Char -> Char
prim__ashrBigInt : Integer -> Integer -> Integer
prim__ashrB8 : Bits8 -> Bits8 -> Bits8
prim__ashrB64 : Bits64 -> Bits64 -> Bits64
prim__ashrB32 : Bits32 -> Bits32 -> Bits32
prim__ashrB16 : Bits16 -> Bits16 -> Bits16
prim__andInt : Int -> Int -> Int
prim__andChar : Char -> Char -> Char
prim__andBigInt : Integer -> Integer -> Integer
prim__andB8 : Bits8 -> Bits8 -> Bits8
prim__andB64 : Bits64 -> Bits64 -> Bits64
prim__andB32 : Bits32 -> Bits32 -> Bits32
prim__andB16 : Bits16 -> Bits16 -> Bits16
prim__addInt : Int -> Int -> Int
prim__addFloat : Double -> Double -> Double
prim__addChar : Char -> Char -> Char
prim__addBigInt : Integer -> Integer -> Integer
prim__addB8 : Bits8 -> Bits8 -> Bits8
prim__addB64 : Bits64 -> Bits64 -> Bits64
prim__addB32 : Bits32 -> Bits32 -> Bits32
prim__addB16 : Bits16 -> Bits16 -> Bits16
par : Lazy a -> a
mkForeignPrim : ForeignPrimType xs env t
liftPrimIO : (World -> PrimIO a) -> IO' l a
io_return : a -> IO' l a
io_bind : IO' l a -> (a -> IO' l b) -> IO' l b
foreign_prim : (f : FFI) -> (fname : ffi_fn f) -> FTy f xs ty -> FEnv f xs -> ty
foreign : (f : FFI) -> (fname : ffi_fn f) -> (ty : Type) -> {auto fty : FTy f [] ty} -> ty
call__IO : IO' l a -> PrimIO a
believe_me : a -> b

Subvert the type checker. This function is abstract, so it will not reduce in
the type checker. Use it with care - it can result in segfaults or worse!

assert_total : a -> a

Assert to the totality checker that the given expression will always
terminate.

assert_smaller : (x : a) -> (y : b) -> b

Assert to the totality checker that y is always structurally smaller than
x (which is typically a pattern argument)

x

the larger value (typically a pattern argument)

y

the smaller value (typically an argument to a recursive call)

applyEnv : (env : FEnv ffi xs) -> ForeignPrimType xs env t -> World -> ffi_fn ffi -> ffi_types ffi t -> PrimIO t
WorldRes : Type -> Type
data World : Type

A token representing the world, for use in IO

TheWorld : prim__WorldType -> World
data Void : Type

The empty type, also known as the trivially false proposition.

Use void or absurd to prove anything if you have a variable of type Void in scope.

data Unit : Type

The canonical single-element type, also known as the trivially
true proposition.

MkUnit : ()

The trivial constructor for ().

data Symbol_ : String -> Type

For 'symbol syntax. 'foo becomes Symbol_ "foo"

Ptr : Type
data PrimIO : Type -> Type

Idris's primitive IO, for building abstractions on top of

prim__IO : a -> PrimIO a
PE_return_3228af16 : a -> IO' ffi a
PE_map_b7a1b69c : (m : a -> b) -> Vect n a -> Vect n b
PE_List a, TT instance of Language.Reflection.Quotable_c7b7686 : Quotable (List String) TT
PE_List a, TT instance of Language.Reflection.Quotable_61e53b8c : Quotable (List ErrorReportPart) TT
PE_List a, Raw instance of Language.Reflection.Quotable_1f79f810 : Quotable (List String) Raw
PE_@@constructor of Prelude.Monad.Monad#Applicative m_a8f1deca : Applicative (IO' ffi)
PE_>>=_aaa62508 : IO' ffi a -> (a -> IO' ffi b) -> IO' ffi b
ManagedPtr : Type
data LazyType : Type

There are two types of laziness: that arising from lazy functions, and that
arising from codata. They differ in their totality condition.

LazyCodata : LazyType
LazyEval : LazyType
data Lazy' : LazyType -> Type -> Type

The underlying implementation of Lazy and Inf.

Delay : (val : a) -> Lazy' t a

A delayed computation.

Delay is inserted automatically by the elaborator where necessary.

Note that compiled code gives Delay special semantics.

t

whether this is laziness from codata or normal lazy evaluation

a

the type of the eventual value

val

a computation that will produce a value

Lazy : Type -> Type

Lazily evaluated values. This has special evaluation semantics.

data JsFn : Type -> Type
MkJsFn : (x : t) -> JsFn t
data JS_Types : Type -> Type
JS_Str : JS_Types String
JS_Float : JS_Types Double
JS_Ptr : JS_Types Ptr
JS_Unit : JS_Types ()
JS_FnT : JS_FnTypes a -> JS_Types (JsFn a)
JS_IntT : JS_IntTypes i -> JS_Types i
data JS_IntTypes : Type -> Type
JS_IntChar : JS_IntTypes Char
JS_IntNative : JS_IntTypes Int
JS_IO : Type -> Type
data JS_FnTypes : Type -> Type
JS_Fn : JS_Types s -> JS_FnTypes t -> JS_FnTypes (s -> t)
JS_FnIO : JS_Types t -> JS_FnTypes (IO' l t)
JS_FnBase : JS_Types t -> JS_FnTypes t
Inf : Type -> Type

Recursive parameters to codata. Inserted automatically by the elaborator
on a "codata" definition but is necessary by hand if mixing inductive and
coinductive parameters.

data IO' : (lang : FFI) -> Type -> Type
MkIO : (World -> PrimIO a) -> IO' lang a
IO : Type -> Type
ForeignPrimType : (xs : List Type) -> FEnv ffi xs -> Type -> Type
Force : Lazy' t a -> a

Compute a value from a delayed computation.

Inserted by the elaborator where necessary.

Float : Type
data FTy : FFI -> List Type -> Type -> Type
FRet : ffi_types f t -> FTy f xs (IO' f t)
FFun : ffi_types f s -> FTy f (s :: xs) t -> FTy f xs (s -> t)
FFI_JS : FFI
data FFI : Type
MkFFI : (ffi_types : Type -> Type) -> (ffi_fn : Type) -> (ffi_data : Type) -> FFI
data (=) : (x : A) -> (y : B) -> Type

The propositional equality type. A proof that x = y.

To use such a proof, pattern-match on it, and the two equal things will then need to be the same pattern.

Note: Idris's equality type is potentially heterogeneous, which means that it is possible to state equalities between values of potentially different types. However, Idris will attempt the homogeneous case unless it fails to typecheck.

You may need to use (~=~) to explicitly request heterogeneous equality.

A

the type of the left side of the equality

B

the type of the right side of the equality

Refl : x = x

A proof that x in fact equals x. To construct this, you must have already shown that both sides are in fact equal.

A

the type at which the equality is proven

x

the element shown to be equal to itself.